﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//利用联合体判断字节序
//union U 
//{
//	int n;
//	char ch;
//};
//
//int main()
//{
//	union U u = { 1 };
//	if (u.ch == 1)
//	{
//		printf("小端\n");
//	}
//	else
//	{
//		printf("大端\n");
//	}
//	return 0;
//}

//变种水仙花
//int main()
//{
//    int i = 0;
//    for (i = 10000; i < 100000; i++)
//    {
//        int a = i % 10;//5
//        int b = i / 10;//1234
//        int c = i % 100;//45
//        int d = b / 10;//123
//        int e = i % 1000;//345
//        int f = d / 10;//12
//        int h = i % 10000;//2345
//        int j = f / 10;//1
//        if (i == a * b + c * d + e * f + j * h)
//        {
//            printf("%d ", i);
//        }
//    }
//    return 0;
//}

//序列中删除指定数字
//int main() {
//    int n = 0;
//    scanf("%d", &n);
//    int arr[50] = { 0 };
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d ", &arr[i]);
//    }
//    int m = 0;
//    scanf("%d", &m);
//    for (i = 0; i < n; i++)
//    {
//        if (m != arr[i])
//        {
//            printf("%d ", arr[i]);
//        }
//    }
//    return 0;
//}



//struct Stu
//{
//    char name[20];
//    char sax[10];
//    int age;
//};
//
//int main()
//{
//    // 按照结构体成员的顺序初始化
//    struct Stu s = { "zhangsan","男",20 };
//    printf("name:%s\n", s.name);
//    printf("sax:%s\n", s.sax);
//    printf("age:%d\n", s.age);
//    //按照指定的顺序初始化
//    struct Stu s2 = { .age = 18,.name = "lisi",.sax = "女" };
//    printf("name:%s\n", s2.name);
//    printf("sax:%s\n", s2.sax);
//    printf("age:%d\n", s2.age);
//    return 0;
//}

//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//int main()
//{
//	printf("S1 = %d\n", sizeof(struct S1));
//	printf("S2 = %d\n", sizeof(struct S2));
//	return 0;
//}


//#pragma pack(1)//设置默认对⻬数为1
//struct S
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()//取消设置的对⻬数，还原为默认
//int main()
//{
//	//当对其数为1的时候，就相当于不存在内存对齐
//	//结果为6
//	printf("%d\n", sizeof(struct S));
//	return 0;
//}


struct S
{
	int data[1000];
	int num;
};
struct S s = { {1,2,3,4}, 1000 };
//结构体传参
void print1(struct S s)
{
	printf("%d\n", s.num);
}
//结构体地址传参
void print2(struct S* ps)
{
	printf("%d\n", ps->num);
}
int main()
{
	print1(s);  //传结构体
	print2(&s); //传地址
	return 0;
}